package classesdao;

import java.sql.*;
import classesbean.Autor;
import classesbean.Livro;
import conexaobd.ConectaBD;
import java.util.ArrayList;

public class AutorDAO {
    //Método usado para fazer a inserçao
    public void inserir(Autor a){
        ConectaBD.abreConexao();
        String sql = "insert into tb_autor values (?,?,?,?,?,?)";
        try{
            PreparedStatement pst = ConectaBD.prepare(sql);
            pst.setString(1, null);
            pst.setString(2, a.getNome());
            pst.setString(3, a.getArea_conhecimento());
            pst.setString(4, a.getEmail());
            pst.setString(5, a.getNacionalidade());
            pst.setString(6, a.getOrientador());
            pst.executeUpdate(); 
        }catch(Exception erro){
            System.out.println("Erro " + erro.getMessage());
        }
        
        ConectaBD.fechaConexao();
    }
    //Método usado para consulta
    public Autor pesquisar(int id){
        String sql = "SELECT * from tb_autor where id_autor=" + id;
        ConectaBD.abreConexao();
        ResultSet res = ConectaBD.executaConsulta(sql);
       
        Autor a = new Autor();
        
        try{
            if(res.next()){
                a.setNome(res.getString("autor"));
                a.setArea_conhecimento(res.getString("area_conhecimento"));
                a.setEmail(res.getString("e-mail"));
                a.setNacionalidade(res.getString("nacionalidade"));
                a.setOrientador(res.getString("orientador"));
            }
        }catch(Exception erro){
            System.out.println(erro.getMessage());
        }
        ConectaBD.fechaConexao();
        return a;
    }
    public ArrayList<Autor> pesquisaAutorLivro(int id_livro){
        String sql = "select l.id_autor from tb_livro_for_tb_autor as l where id_livro="+id_livro;
        ConectaBD.abreConexao();
        ResultSet res = ConectaBD.executaConsulta(sql);
       
        ArrayList<Autor> lista = new ArrayList<Autor>();
        try{
            while(res.next()){
                Autor a = pesquisar(res.getInt("id_autor"));
                lista.add(a);
            }
        }catch(Exception erro){
            System.out.println(erro.getMessage());
        }
        ConectaBD.fechaConexao();
        return lista;
    }
    //Método para exclusao
    public void delete(int id){
        String sql = "delete from tb_autor where id_autor = '"+ id + "';";
        ConectaBD.abreConexao();
        ConectaBD.executaSQL(sql);
        ConectaBD.fechaConexao();
    }
    //Método para atualizaçao
    public void atualizar(Autor a, int id){
        String sql = "update tb_autor set autor= '"+ a.getNome()+ ", area_conhecimento='"+a.getArea_conhecimento()
                    +"', email='"+a.getEmail()+"', nacionalidade='"+a.getNacionalidade()+"', orientador='"
                    +a.getOrientador()+ "' WHERE id_autor = '" +id+"'"; 
        ConectaBD.abreConexao();
        ConectaBD.executaSQL(sql);
        ConectaBD.fechaConexao();
    }
}